Many software applications rely on cooperative interaction with other computing systems over a network. The Internet Protocol (IP) is a protocol that provides for a mechanism to address different nodes in a network, and also provides a mechanism to fragment larger messages into smaller pieces that can be handled by the various intermediating networks between two communicating network nodes. Network messages that conform to an Internet Protocol are often referred to as “IP packets”, which are processed using logic at the IP layer in the protocol stack.
As an IP packet is in transit from the source application to the target application, the IP packet will often transit through various routers, each having their own routing logic at the IP layer in the protocol stack, that allows the router to make decisions about how to best route the IP packet to the intended destination.
The IP protocol also provides for a portion of the packet header to include a selection of a larger number of optional processing to apply to the IP packet. One of these options is a source route option, which allows the source to specify part or all of the route to take.